package cn.com.lyb.annotation;

import org.jetbrains.annotations.NotNull;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @author lvyuanbo
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface RedissionLock {
    /**
     * 分布式锁的key
     */
    @NotNull
    String keyPrefix();
    /**
     * 类型，例如：收藏 评论等
     */
    @NotNull
    String type();

    /**
     * 获取锁等待时间（默认两秒，还没获取到锁即放弃）
     */
    long waitTime() default 2;

    /**
     * 过期时长，防止一直占用锁
     */
    long expire() default 10;

    /**
     * 过期时长单位
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

}
